/*- * See the file LICENSE for redistribution information. * * Copyright (c) 2002-2006 * Sleepycat Software. All rights reserved. * * $Id: RecoveryInfo.java,v 1.1 2006/05/06 09:00:37 ckaestne Exp $ */ package com.sleepycat.je.recovery; import com.sleepycat.je.utilint.DbLsn; /** * RecoveryInfo keeps information about recovery processing. */ public class RecoveryInfo { /* Locations found during recovery. */ public long lastUsedLsn = DbLsn.NULL_LSN; // location of last entry public long nextAvailableLsn = DbLsn.NULL_LSN; // EOF, location of first unused spot public long firstActiveLsn = DbLsn.NULL_LSN; public long checkpointStartLsn = DbLsn.NULL_LSN; public long checkpointEndLsn = DbLsn.NULL_LSN; public long useRootLsn = DbLsn.NULL_LSN; /* * Represents the first CkptStart following the CkptEnd. It is a CkptStart * with no CkptEnd, and is used for counting provisional INs obsolete. */ public long partialCheckpointStartLsn = DbLsn.NULL_LSN; // Checkpoint record used for this recovery. public CheckpointEnd checkpointEnd; // Ids public long useMaxNodeId; public int useMaxDbId; public long useMaxTxnId; // num nodes read public int numMapINs; public int numOtherINs; public int numBinDeltas; public int numDuplicateINs; // ln processing public int lnFound; public int lnNotFound; public int lnInserted; public int lnReplaced; // FileReader behavior public int nRepeatIteratorReads; public String toString() { StringBuffer sb = new StringBuffer(); sb.append("Recovery Info"); appendLsn(sb, " lastUsed=", lastUsedLsn); appendLsn(sb, " nextAvail=", nextAvailableLsn); appendLsn(sb, " ckptStart=", checkpointStartLsn); appendLsn(sb, " firstActive=", firstActiveLsn); appendLsn(sb, " ckptEnd=", checkpointEndLsn); appendLsn(sb, " useRoot=", useRootLsn); sb.append(" ckptEnd=<").append(checkpointEnd).append(">"); sb.append(" useMaxNodeId=").append(useMaxNodeId); sb.append(" useMaxDbId=").append(useMaxDbId); sb.append(" useMaxTxnId=").append(useMaxTxnId); sb.append(" numMapINs=").append(numMapINs); sb.append(" numOtherINs=").append(numOtherINs); sb.append(" numBinDeltas=").append(numBinDeltas); sb.append(" numDuplicateINs=").append(numDuplicateINs); sb.append(" lnFound=").append(lnFound); sb.append(" lnNotFound=").append(lnNotFound); sb.append(" lnInserted=").append(lnInserted); sb.append(" lnReplaced=").append(lnReplaced); sb.append(" nRepeatIteratorReads=").append(nRepeatIteratorReads); return sb.toString(); } private void appendLsn(StringBuffer sb, String name, long lsn) { if (lsn != DbLsn.NULL_LSN) { sb.append(name).append(DbLsn.getNoFormatString(lsn)); } } }